16−20 ExcelVBA2000年問題Checkまとめ

No 項目 マクロ例 結果 記事
1
 
 
 
 
 
 
 
システム日付
の設定
(年4桁)
 
詳細16-5
 
 
 
Date = #2000/01/01#
〜 Date = #2079/12/31#
OK
 
 
 
Date = #2079/01/01#
〜 Date = #2099/12/31#
実行時エラー
 
 
 
Date = #1900/01/01#
〜 Date = #1979/12/31#
実行時エラー
 
 
 
Date = #1980/01/01#
〜 Date = #1999/12/31#
OK
 
 
 
2
 
 
 
 
 
システム日付
の設定
(年2桁)
 
詳細16-5
 
Date = #00/01/01#
〜 Date = #29/12/31#
OK
 
2000〜2029
 
Date = #30/01/01#
〜 Date = #79/12/31#
実行時エラー
 
 
 
Date = #80/01/01#
〜 Date = #99/12/31#
OK
 
1980〜1999
 
3
 
 
インプットボックス
月/日入力
詳細16-6
hia = InputBox("「月/日」入力")
hi = CDate(hia)
.
OK
 
 
年はシステム設定の年となる
 
 
4
 
 
日付順に
並び変え
詳細16-8
Selection.SortSpecial SortMethod:=_
xlSyllabary, Key1:=Range("B2"), _
Order1:=xlDescending,以下略
OK
 
 
日付はExcelのシリアル値で
並び変えており問題は起
きない
5
 
 
日数計算
 
詳細16-7
(Now - Cells(c, 2)) / 365.25
 
本例は日数を年齢にしたケース
OK
 
 
日付はExcelのシリアル値で
計算しており問題は起きない
(Cells(c, 2)は日付形式)
6
 
 
 
日付の比較
 
詳細16-9
 
hiz = DateValue("99/12/31")
 If Cells(i, 2) - hiz > 0 Then
  Cells(i, 3) = 1
 End If
OK
 
 
 
日付比較はExcelのシリアル
値でおこなっており問題は
起きない
(Cells(i, 2)は日付形式)
7
 
 
 
 
 
 
オートフィルター
による抽出
 
詳細16-10
 
 
 
dat = "1/1"
Range("a1").Select
Selection.AutoFilter Field:="2", Criteria1:=dat
1/1→ OK
01/01→ダメ
 
月/日のみを指定して抽出の
場合は1900年代・2000年代は
関係なく月/日が一致を抽出
dat = "21/1/1"
Range("a1").Select
Selection.AutoFilter Field:="2", Criteria1:=dat
 
21/1/1→ダメ
21/01/0→OK
4桁年で抽出
出来ない
マクロ実行で通常は実害は
無いと思われるが、本例では
1921年と2021年を対象に
抽出
8
 
 
 
AdvancedFilter
による抽出
詳細16-11
 
Cells(2, 5) = CDate("99/12/31")
Range("A1:B5").AdvancedFilter Action:=_
xlFilterCopy,CriteriaRange:=Range("E1:E2"), _
CopyToRange:=Range("E5:F6")
OK
 
 
 
日付はExcelのシリアル値で
抽出しており問題は起きない
なお、セットData(例Cells(2, 5))
は日付型にすること
9
 
 
 
日付の置換え
 
詳細16-13
 
ymd1 = #2000/01/11#
ymd2 = #2000/01/12#
Cells.Replace What:=ymd1, _
Replacement:=ymd2, LookAt:= 以下略
OK
 
 
 
日付はExcelのシリアル値で
抽出し、指定した日付に置き
換えており問題は無し
 
10
 
 
 
ピポットテーブル
で日付集計
詳細16-14
 
略−−
.AddFields RowFields:="日付", _
ColumnFields:="製品" 略−−
.PivotFields("数量").Orientation  略
OK
 
 
 
日付はExcelのシリアル値で
まとめており問題は無し
 
 
11
 
 
 
Findメソッド
による抽出
詳細16-19
 
hiz = "2000/01/11"
On Error Resume Next
Range("B1:B8").Find(hiz, , , xlWhole, _
xlByColumns, xlNext, False).Activate以下略
OK
 
 
 
日付はExcelのシリアル値で
抽出しており問題は無し
※日付を抽出するのであれ
ばキーワードも日付型が良い
12
 
 
 
 
 
 
 
 
セルへ2桁年
書き込み
 
詳細16-17
 
 
 
 
 
Cells(11, 1) = DateValue("01/01/00") (2000/1/1) 日の無い数字は(MM/dd/yy)
Cells(12, 1) = DateValue("00/01/01") (2000/1/1) 00は2000年
Cells(13, 1) = DateValue("01/01/31") (2001/1/31)  
Cells(14, 1) = DateValue("01/01/32") (2032/1/1) 日の無い数字は(MM/dd/yy)
Cells(15, 1) = DateValue("02/01/01") (2002/1/1)  
Cells(16, 1) = DateValue("12/01/01") (2012/1/1)  
Cells(17, 1) = DateValue("29/01/01") (2029/1/1) 29は2029年
Cells(18, 1) = DateValue("30/01/01") (1930/1/1) 30は1930年
Cells(19, 1) = DateValue("99/01/01") (1999/1/1)  
13
 
 
 
 
 
 
 
(参考)
Excelでセルへ
2桁年入力
 
(参考16-2)
 
 
 
セルへ(65/01/01)を入力 1965/1/1 昭和40年1月1日
セルへ(99/12/31)を入力 1999/12/31 平成11年12月31日
セルへ(00/01/01)を入力 2000/1/1 平成12年1月1日
セルへ(01/01/07)を入力 1989/1/7 昭和64年1月7日
セルへ(01/01/08)を入力 1989/1/8 平成1年1月8日
セルへ(20/12/31)を入力 2008/1/1 平成20年12月31日
セルへ(21/01/01)を入力 1946/1/1 昭和21年1月1日
セルへ(64/12/31)を入力 1989/12/31 昭和64年1月1日

16−21 Excel2000 年号の2桁入力

Excel2000では2桁入力の年号は全て西暦として扱われる。(下記参照)
2桁の年入力(Excel2000)
 
00〜29 → 2000〜2029
30〜99 → 1930〜1999
 
H12.1.1 → 平成12年1月1日
和暦は、M(明治)、T(大正)、S(昭和)
H(平成)を年数の前に付ける
2桁の年入力(Excel95・97)
00 → 2000
01 → 昭和64年
02 → 平成2年
20 → 平成20年
21 → 昭和21年
64 → 昭和64年
65〜99 → 1965〜1999

(16-1〜16-10)(16-11〜16-19)(16-20〜)

フレ−ム分割非対応の目次へ戻る

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル